#include "ku.h"
#include<cmath>
double initime(double r){//90808
    double n_1 = floor(r/100)-floor(r/10000)*100;
    double n_2 = r-floor(r/100)*100;
    return n_1*24+n_2;
}

double truetime(double rotime) {
    return rotime-initime(90808);
}


double funcy(double a,double b,double c,double t) {
    return a*t*t+b*t+c;
}

double funcx(double a,double c,double r,double t_1,double t_2) {
    return a*(t_1-t_2)*(t_1-t_2)*exp(r*(t_1-180))+c;
}

bool read_file(std::vector<double> &target_1,std::vector<double> &target_2,std::vector<double> &target_3,std::string filename,int *number){
    std::ifstream ifs;
    ifs.open(("../"+ filename +".txt").c_str(),std::ios::in);
    if(!ifs.is_open()){
        std::cout<<"error!";
        return false;
    }
    //vector<int>target_1, target_2;
    std::vector<std::string> item;//用于存放文件中的一行数据
    std::string temp;//把文件中的一行数据作为字符串放入容器中
    while(getline(ifs,temp)){//利用getline（）读取每一行，并放入到 item 中
        item.push_back(temp);
    }
    for (auto it = item.begin(); it != item.end(); it++){
		//cout << *it << endl;
		std::istringstream istr(*it);                 //其作用是把字符串分解为单词(在此处就是把一行数据分为单个数据)
		std::string str;
		int count = 0;							 //统计一行数据中单个数据个数
        //获取文件中的第 1、2 列数据
		while (istr >> str)                      //以空格为界，把istringstream中数据取出放入到依次s中
		{
            //获取第1列数据
			if (count == 0){
				double time = (double)atoi(str.c_str());       //数据类型转换，将string类型转换成float,如果字符串不是有数字组成，则字符被转化为 0
            	time = initime(time);
                time = truetime(time);
                target_1.push_back(time);
			}
            //获取第2列数据
			else if (count == 1){
			    double r = (double)atof(str.c_str());       //数据类型转换，将string类型转换成float
                target_2.push_back(r);
			}
            else if (count == 2){
                double s = (double)atof(str.c_str()); 
                target_3.push_back(s);
            }
			count++;
		}
	}
    *number = target_1.size();
	return true;
}
